package com.liangtian.mdm.system.permission.dao;

import com.liangtian.mdm.base.BaseDao;
import com.liangtian.mdm.system.button.model.SysPermissionButton;
import com.liangtian.mdm.system.permission.model.SysPermission;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <p>Encoding    :  UTF-8</p>
 * <p>Package Name: com.liangtian.mdm.system.dictionary.dao </p>
 * <p>Project Name: dm </p>
 * <p>Copyright   :  Copyright(c) 2016 石化盈科信息技术有限责任公司 </p>
 * <p>Created Time: 2016-04-28 18:20</p>
 * <p>Description : 权限持久层接口</p>
 *
 * @author : beamzhang
 * @version :  1.0
 */
@Repository
public interface SysPermissionDao extends BaseDao<SysPermission> {

    /**
     * @param permission 对象
     * @return 受影响的行数
     * @desc 编辑 （编辑数据；启用-1；禁用-0）
     */
    int updatePermission(SysPermission permission);


    /**
     * @param params ids的结合信息
     * @return 受影响的行数
     * @desc 批量删除权限数据
     */
    int batchDeletePermission(Map<String, Object> params);

    /**
     * @param permission 分页数据的信息
     * @return 权限信息
     * @desc 获取全部的权限信息
     */
    List<Map<String, Object>> queryAllPermission(SysPermission permission);

    /**
     * @param pramas
     * @return 全部启用状态下的权限树
     * @desc 获取权限资源 权限新增时的权限树
     */
    List<Map<String, Object>> queryPermissionMapListForTree(Map<String, Object> pramas);

    /**
     * @return 受影响的行数
     * @desc 新增权限状态
     */
    int insertSysPermission(SysPermission sysPermission);

    /**
     * @return 受影响的行数
     * @desc 编辑权限状态
     */
    int editPermissionStatus(Map<String, Object> params);

    /**
     * @param params id map集合
     * @return 权限信息
     * @desc 通过权限id查询权限信息
     */
    Map<String, Object> queryDocumentByPermission(Map<String, Object> params);

    /**
     * @param params
     * @return 权限列表
     * @desc 根据当前角色获取角色拥有的权限
     */
    List<Map<String, Object>> queryPermissionByRoleId(Map<String, Object> params);

    /**
     * @param pramas
     * @return 全部启用状态下的权限树
     * @desc 获取机构关联权限树
     */
    List<Map<String, Object>> queryPermissionMapListForOrTree(Map<String, Object> pramas);

    /**
     * @param params ids的结合信息
     * @return 受影响的行数
     * @desc 批量删除角色权限数据
     */
    int batchDeleteRolePermission(Map<String, Object> params);

    /**
     * @param params
     * @return 资源信息列表
     * @desc 根据角色信息查询资源信息
     */
    List<Map<String, Object>> queryPermissionsMapByRoleIds(Map<String, Object> params);

    /**
     * @param params
     * @return 资源信息列表
     * @desc 根据用户信息查询资源信息
     */
    List<Map<String, Object>> queryPermissionsMapByUserId(Map<String, Object> params);

    List<Map<String, Object>> queryPermissionsMapByUserIdAndUGroupId(String userId);

    /**
     * @return 受影响的行数
     * @desc 根据资源父ID查询角色是否关联
     */
    int queryRolePermissionId(SysPermission sysPermission);

    /**
     * 权限名
     * @param userAccount
     * @return
     */
    List<SysPermission> queryPermissionsByUserAccount(String userAccount);

    List<SysPermissionButton> queryButtonPermissionsByUserAccount(String userAccount);
}

